package com.party.admin.web.dto.output.crowdfund;

import com.party.common.annotation.ExcelField;
import com.party.core.model.crowdfund.ProjectWithAuthor;
import org.springframework.beans.BeanUtils;

import java.util.Date;

/**
 * 活动的众筹列表输出视图
 * Created by wei.li
 *
 * @date 2017/2/24 0024
 * @time 18:27
 */
public class ProjectForActivityMultiOutput {

    //编号
    private String id;

    //创建者编号
    private String authorId;

    //创建者名称
    private String authorName;

    //创建者图片
    private String authorLogo;

    //创建者公司
    private String authorCompany;

    //创建者职务
    private String authorJobTitle;

    //创建者电话
    private String authorMobile;

    //创建者区域
    private String cityName;

    //创建时间
    private Date createDate;

    //支持者数目
    private Integer favorerNum;

    //备注
    private String remarks;

    //实际筹集资金
    private Float actualAmount;

    //实时筹集资金(有可能大于目标金额)
    private Float realTimeAmount;

    //宣言
    private String declaration;

    //众筹是否成功
    private Integer isSuccess;

    //众筹状态
    private String status;

    //浏览量
    private Integer viewNum;

    //二维码
    private String qrCodeUrl;

    //访问链接
    private String url;

    // 佣金
    private Float brokerage;

    //孩子节点数
    private Integer childNum;

    //父级名称
    private String parentName;

    //父级ID
    private String parentId;
    //父级头像
    private String parentLogo;
    //渠道
    private String publisher;

    //众筹支持转移状态
    private Integer transferStatus;

    //支付金额
    private Float payAmount;//针对直接付款众筹的付款金额

//    //状态
//    private Integer payStatus;

    //支付时间
    private Date payTime;//针对直接付款众筹的付款时间

    //商户名称
    private String partnerName;

    //支持者订单ID
    private String supportId;

    // 参赛状态
    private Integer competitionStatus;

    // 参赛状态(导出)
    private String compStatus;

    // 已消费金额
    private Double consumedAmount;

    // 剩余金额
    private Double remindAmount;

    // 活动金额
    private Double gradationTargetAmount;

    public static ProjectForActivityMultiOutput transform(ProjectWithAuthor projectWithAuthor) {
        ProjectForActivityMultiOutput projectForActivityOutput = new ProjectForActivityMultiOutput();
        BeanUtils.copyProperties(projectWithAuthor, projectForActivityOutput);
        return projectForActivityOutput;
    }

    public String getParentLogo() {
        return parentLogo;
    }

    public void setParentLogo(String parentLogo) {
        this.parentLogo = parentLogo;
    }

    public String getParentId() {
        return parentId;
    }

    public void setParentId(String parentId) {
        this.parentId = parentId;
    }

    @ExcelField(title = "区域", align = 2, sort = 6)
    public String getCityName() {
        return cityName;
    }

    public void setCityName(String cityName) {
        this.cityName = cityName;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @ExcelField(title = "众筹者", align = 2, sort = 1)
    public String getAuthorName() {
        return authorName;
    }

    public void setAuthorName(String authorName) {
        this.authorName = authorName;
    }

    public String getAuthorLogo() {
        return authorLogo;
    }

    public void setAuthorLogo(String authorLogo) {
        this.authorLogo = authorLogo;
    }

    public Date getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }

    @ExcelField(title = "支持人数", align = 2, sort = 9)
    public Integer getFavorerNum() {
        return favorerNum;
    }

    public void setFavorerNum(Integer favorerNum) {
        this.favorerNum = favorerNum;
    }

    public String getRemarks() {
        return remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    @ExcelField(title = "支持金额", align = 2, sort = 10)
    public Float getActualAmount() {
        return actualAmount;
    }

    public void setActualAmount(Float actualAmount) {
        this.actualAmount = actualAmount;
    }

    public String getDeclaration() {
        return declaration;
    }

    public void setDeclaration(String declaration) {
        this.declaration = declaration;
    }

    @ExcelField(title = "公司", align = 2, sort = 5)
    public String getAuthorCompany() {
        return authorCompany;
    }

    public void setAuthorCompany(String authorCompany) {
        this.authorCompany = authorCompany;
    }

    @ExcelField(title = "职务", align = 2, sort = 7)
    public String getAuthorJobTitle() {
        return authorJobTitle;
    }

    public void setAuthorJobTitle(String authorJobTitle) {
        this.authorJobTitle = authorJobTitle;
    }

    @ExcelField(title = "联系电话", align = 2, sort = 8)
    public String getAuthorMobile() {
        return authorMobile;
    }

    public void setAuthorMobile(String authorMobile) {
        this.authorMobile = authorMobile;
    }

    public Integer getIsSuccess() {
        return isSuccess;
    }

    public void setIsSuccess(Integer isSuccess) {
        this.isSuccess = isSuccess;
    }

    public String getAuthorId() {
        return authorId;
    }

    public void setAuthorId(String authorId) {
        this.authorId = authorId;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    @ExcelField(title = "浏览量", align = 2, sort = 16)
    public Integer getViewNum() {
        return viewNum;
    }

    public void setViewNum(Integer viewNum) {
        this.viewNum = viewNum;
    }

    public String getQrCodeUrl() {
        return qrCodeUrl;
    }

    public void setQrCodeUrl(String qrCodeUrl) {
        this.qrCodeUrl = qrCodeUrl;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public Float getBrokerage() {
        return brokerage;
    }

    public void setBrokerage(Float brokerage) {
        this.brokerage = brokerage;
    }

    @ExcelField(title = "下级报名人数", align = 2, sort = 4)
    public Integer getChildNum() {
        return childNum;
    }

    public void setChildNum(Integer childNum) {
        this.childNum = childNum;
    }

    @ExcelField(title = "报名来源", align = 2, sort = 3)
    public String getParentName() {
        return parentName;
    }

    public void setParentName(String parentName) {
        this.parentName = parentName;
    }

    @ExcelField(title = "渠道", align = 2, sort = 2)
    public String getPublisher() {
        return publisher;
    }

    public void setPublisher(String publisher) {
        this.publisher = publisher;
    }

    @ExcelField(title = "真实金额", align = 2, sort = 11)
    public Float getRealTimeAmount() {
        return realTimeAmount;
    }

    public void setRealTimeAmount(Float realTimeAmount) {
        this.realTimeAmount = realTimeAmount;
    }

    public Integer getTransferStatus() {
        return transferStatus;
    }

    public void setTransferStatus(Integer transferStatus) {
        this.transferStatus = transferStatus;
    }

    public Float getPayAmount() {
        return payAmount;
    }

    public void setPayAmount(Float payAmount) {
        this.payAmount = payAmount;
    }

    public Date getPayTime() {
        return payTime;
    }

    public void setPayTime(Date payTime) {
        this.payTime = payTime;
    }

    public String getPartnerName() {
        return partnerName;
    }

    public void setPartnerName(String partnerName) {
        this.partnerName = partnerName;
    }

    public String getSupportId() {
        return supportId;
    }

    public void setSupportId(String supportId) {
        this.supportId = supportId;
    }

    public Integer getCompetitionStatus() {
        return competitionStatus;
    }

    public void setCompetitionStatus(Integer competitionStatus) {
        this.competitionStatus = competitionStatus;
    }

    @ExcelField(title = "已消费金额", align = 2, sort = 13)
    public Double getConsumedAmount() {
        return consumedAmount;
    }

    public void setConsumedAmount(Double consumedAmount) {
        this.consumedAmount = consumedAmount;
    }

    @ExcelField(title = "剩余金额", align = 2, sort = 14)
    public Double getRemindAmount() {
        return remindAmount;
    }

    public void setRemindAmount(Double remindAmount) {
        this.remindAmount = remindAmount;
    }

    @ExcelField(title = "参赛状态", align = 2, sort = 15)
    public String getCompStatus() {
        return compStatus;
    }

    public void setCompStatus(String compStatus) {
        this.compStatus = compStatus;
    }

    @ExcelField(title = "活动金额", align = 2, sort = 12)
    public Double getGradationTargetAmount() {
        return gradationTargetAmount;
    }

    public void setGradationTargetAmount(Double gradationTargetAmount) {
        this.gradationTargetAmount = gradationTargetAmount;
    }
}
